Function.prototype.call3=function(context){
    context.fn=this;
    var args=[];
    for(let i=1;i<arguments.length;i++){
        // args.push('arguments['+i+']');
        args.push(arguments[i])
    }
    console.log(args);
    console.log('context.fn('+args+')')
    context.fn(...args)
    delete context.fn;
}

var foo={
    value:1
}
function bar(name,age){
    console.log(this.value)
    console.log(name)
    console.log(age)
}
bar.call3(foo,'zhangsna',22)